1. Field of the Invention
The present invention relates generally to the field of computer systems and, more specifically, the present invention relates to a method of error detection.
2. Description of the Related Art
Process technology scaling improves overall system performance by increasing transistor density and reducing power consumption. Both of these factors, however, make processors prone to soft (or transient) errors. A soft error occurs when a logical value of a memory cell or a logic element is erroneously changed to the opposite logical value as a result of alpha particle and neutron bombardments. Thus, soft errors may corrupt processor states, including processor control code which has instructions that control various processor states. Accordingly, protecting against soft errors in the control code improves the reliability of microprocessors.
One of the simplest error protection techniques is to duplicate an entire processor and compare the outputs of the two processors for any differences. This technique is limited due to its high cost.
Parity and error correction are easy to implement and commonly used to protect on-chip memory arrays, but are less commonly used on other non-structured elements (e.g., control logic, which is often implemented as random logic). Soft errors in the control logic can be fatal because they affect the instruction sequencing and/or the instruction integrity of the execution stream. In the past, soft errors are typically left unprotected because they were difficult to protect and they were relatively rare for the prior art process technology being used. With advances in scaling technology, soft errors can no longer be ignored.
Control flow monitoring has been performed in the prior art. Conventionally, control flow monitoring requires a compiler to compute and insert a checksum for each basic block of instructions in the code and rely on the processor hardware to compare checksums generated by the hardware itself and by the compiler. This approach is not flexible because it requires modification (and therefore recompilation) of the applications.